

# 数据初始化
# 用户名信息
userInfoList = [{'userName':'zhansan','passWord':'123456','balance':1000},
                {'userName':'lisi','passWord':'123456','balance':1000},
                {'userName':'wangwu','passWord':'123456','balance':1000}]

# 用户名对应的索引
userIndexDic = {'zhansan':0,
                'lisi':1,
                'wangwu':2}

maxError = 3
def login():
    '''
    此函数主要处理登陆
    :return: 登陆成功后则返回索引，登陆失败返回-1
    '''
    userName = input('请输入用户名: ')
    passWord = input('请输入密码: ')
    if userName in userIndexDic:
        index = userIndexDic[userName];
        userInfo = userInfoList[index]
        oriPassWord = userInfo['passWord']
        errorCount = 0;
        while True:
            if passWord == oriPassWord:
                print("*"*20,'登陆成功！',"*"*20)
                return index
            else:
                errorCount += 1
                if (errorCount >= maxError):
                    print("对不起，今日机会已用完，请去柜台办理业务！");
                    return -1
                print("密码错误，请重新输入！您还有%d次机会" % (maxError-errorCount));
                passWord = input('请重新输入密码! ')

    else:
        print('用户名不存在!!!!')
        return -1

def processLoginSuccess(userIndex):
    '''
    登陆成功后的处理
    :param userIndex: 在数据库里的索引
    :return:
    '''
    userInfo = userInfoList[userIndex]
    userName = userInfo['userName']
    balance = userInfo['balance']
    while True:
        print('尊敬的%s客户您好！本系统提供以下功能'% (userName))
        print('{:<10} {:<10} {:<10} {:<10}'.format('1.查询余额', '2.取款', '3.存款', '4.退出登陆'))
        sel = input('请选择需要的操作: ')
        if sel == '1': #余额查询
            print('当前账户余额为: {}元 ,'.format(balance),end=' ')
        elif sel == '2': #取款处理
            take = int(input("请输入取款金额："))
            # 考虑余额是否充足
            if take > balance:
                print("余额不足！",end='')
            else:

                # 更新数据并回写
                balance -= take
                userInfo['balance'] = balance;
                userInfoList[userIndex] = userInfo;
                print("取款成功，当前余额为%d元 ,"%(balance), end='')
        elif sel == '3': #存款处理
            depositNum = int(input("请输入存款金额："))
            balance += depositNum
            userInfo['balance'] = balance;
            userInfoList[userIndex] = userInfo
            print("存款成功，当前余额为%d元,"%(balance), end='')
        elif sel == '4':  # 退出登陆
            break
        else:
            print('输入有误，请重新输入！！')
        input('回车键继续操作！')
    return

def processLogin():
    userIndex = login()
    if userIndex != -1:
        processLoginSuccess(userIndex)
    return

#系统主入口
while True:
    print("*"*20)
    print("*"*10,'欢迎来到python银行系统',"*"*10)
    print('{:<20} {:<20}'.format('1.登陆','2.退出'))
    print("*"*41)
    sel = input('请选择需要的操作: ')
    if sel == '1':
        processLogin()
    elif sel == '2':
        print('再见')
        break
    else:
        print('输入有误，请重新输入！！')